#ifndef _SYS_NAME_ERR_H_
#define _SYS_NAME_ERR_H_

#include "Err.h"
#include "SysTypes.h"

#define NAME_ERR_VTABLE(self)   ((NameErrVTable*)((FanObj*)self)->vtable)


extern Type*    NameErr_classType;
extern VTable*  NameErr_classVTable;


/* [sys::NameErr] Attributes */
struct NameErr
{
  Err           super;
};


/* [sys::NameErr] Virtual-table */
typedef struct NameErrVTable
{
  ErrVTable     super;
} NameErrVTable;


/* [sys::NameErr] Methods and fields */
void            NameErr_make_0(NameErr* self);
void            NameErr_make_1(NameErr* self, Str* msg);
void            NameErr_make(NameErr* self, Str* msg, Err* cause);


/* [sys::NameErr] Extra methods */
NameErr*        NameErr_new(Str* msg, Err* cause);
NameErr*        NameErr_newWithFormattedMsg(const char* msgFormat, ...);


/* [sys::NameErr] Type-system functions */
Type*           NameErr_initType(void);
VTable*         NameErr_initVTable(void);
void            NameErr_initStatic(void);


#endif
